<?php

class recibosportipovalor extends Baserecibosportipovalor
{
    /*
     * Funcion que actualiza el recibo relacionado a este reciboportipovalor
     */
    public function getFacturas(){
        $recibo = recibosPeer::retrieveByPK($this->getRecibosId());
        return $recibo->getfacturas();
    }
    public function SumRecibo(){
        //$criteria = new Criteria();
        //$criteria->add(recibosportipovalorPeer::RECIBOS_ID, $this->getRecibosId());
        $recibos = recibosPeer::retrieveByPK($this->getRecibosId());
        $facturas = $recibos->getfacturas();$facturas->save();//$facturas->setTotalPagado($facturas->getTotalPagado() +$this->getImporte() );
        $recibos->setMonto($recibos->getMonto() + $this->getImporte());
        $recibos->save();
    }
    public function ResRecibos(){
        $recibos = recibosPeer::retrieveByPK($this->getRecibosId());
        //$facturas = $recibos->getfacturas();$facturas->save();
        $recibos->setMonto($recibos->getMonto() - $this->getImporte());
        //$facturas->setTotalPagado($facturas->getTotalPagado() - $this->getImporte() );
        $recibos->save();
    }
   private function SumMovimientos(){
        $criteria = new Criteria();
        $criteria->add(movimientosPeer::RECIBOSPORTIPOVALOR_ID,$this->getid());
        $movimientos = movimientosPeer::doSelectOne($criteria);
        if(!$movimientos){
           $movimientos = new movimientos();
           $movimientos->setCierreCajaId($movimientos->BuscarCajaAbierta());
        }
        $movimientos->setMontoingreso($this->getImporte());
        $movimientos->setRecibosportipovalorId($this->getId());
        $movimientos->setcategorias($this->getvalorestipo() );
        $movimientos->setDescripcion('Cobro de la Factura '.$this->getFacturas());
        //$movimientos->setCreatedat($this->getCreatedAt());
        $movimientos->save();
    }

    

    private function BorrarMovimientos(){
         $criteria = new Criteria();
         $criteria->add(movimientosPeer::RECIBOSPORTIPOVALOR_ID,$this->getid());
         $movimientos = movimientosPeer::doSelectOne($criteria);
         $movimientos->delete();
    }
    public function delete(PropelPDO $con = null){
        auditoria::AuditoriaFull($this,true);
        $this->ResRecibos();
        $this->BorrarMovimientos();
        return parent::delete($con);
    }
    public function save(PropelPDO $con = null){
        $affectedRows =  parent::save($con);
        $this->SumMovimientos();
        $this->SumRecibo();
        return $affectedRows;
    }
    private function AuditarBorrado(){
        $auditoria = new auditoria();
        $auditoria->setEvento('BORRADO');
        $auditoria->setTabla('PAGOS CREDITOS');
        $usuario = sfContext::getInstance()->getUser();
        $auditoria->setUsuario($usuario);
        $auditoria->save();
        $au_det = new auditoria_detalle;
        $au_det->setAuditoriaId($auditoria->getId());
        $au_det->setCampo('NUMERO FACTURA');
        $au_det->setValoranterior($this->getFacturas());
        $au_det->setNuevovalor('');
        $au_det->save();
        $au_det = new auditoria_detalle;
        $au_det = new auditoria_detalle;
        $au_det->setAuditoriaId($auditoria->getId());
        $au_det->setCampo('NUMERO RECIBO');
        $au_det->setValoranterior($this->getrecibos());
        $au_det->setNuevovalor('');
        $au_det->save();
        $au_det = new auditoria_detalle;
        $au_det->setAuditoriaId($auditoria->getId());
        $au_det->setCampo('TIPO DE PAGO');
        $au_det->setValoranterior($this->getvalorestipo());
        $au_det->setNuevovalor('');
        $au_det->save();
        $au_det = new auditoria_detalle;
        $au_det->setAuditoriaId($auditoria->getId());
        $au_det->setCampo('FECHA DEL PAGO');
        $au_det->setValoranterior($this->getFecha('d-m-Y'));
        $au_det->setNuevovalor('');
        $au_det->save();
        $au_det = new auditoria_detalle;
        $au_det->setAuditoriaId($auditoria->getId());
        $au_det->setCampo('MONTO');
        $au_det->setValoranterior($this->getImporte());
        $au_det->setNuevovalor('');
        $au_det->save();
        $au_det = new auditoria_detalle;
        $au_det->setAuditoriaId($auditoria->getId());
        $au_det->setCampo('ENTIDAD EMISORA');
        $au_det->setValoranterior($this->getEntidademisora());
        $au_det->setNuevovalor('');
        $au_det->save();
        $au_det = new auditoria_detalle;
        $au_det->setAuditoriaId($auditoria->getId());
        $au_det->setCampo('NUMERO DE DOCUMENTO');
        $au_det->setValoranterior($this->getNumerodocumento());
        $au_det->setNuevovalor('');
        $au_det->save();
    }
    public function __toString() {
        return $this->getId();
    }
    public function EsBorrable(){
        $criteria = new criteria; $criteria->add(movimientosPeer::RECIBOSPORTIPOVALOR_ID,$this->getId());
        $movimientos = movimientosPeer::doSelectOne($criteria);
        $cierre = $movimientos->getcierre_de_caja();
        return $cierre->getAbierto();
    }
    private function ActualizaFactura(){

    }

}
